#!/bin/bash

# ====================================================================
# 预设场景自动化测试客户端 V4.2 - 测试环境
# 用途：测试环境的接口和业务逻辑验证
# 
# 使用方法:
#   ./startPresetClientTest.sh                 # 运行默认场景
#   ./startPresetClientTest.sh basic           # 运行基础场景
#   ./startPresetClientTest.sh straddle_basic  # 运行 Straddle 基础场景
#   ./startPresetClientTest.sh list            # 列出所有可用场景
#
# 环境配置:
#   - 服务器: 47.106.214.252:8889（测试环境）
#   - API Key: 在脚本中配置
# ====================================================================

# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# 测试环境配置（在此修改）
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TEST_SERVER_HOST="47.106.214.252"
TEST_SERVER_PORT="8889"
TEST_API_KEY="pk_test_demo00000000000000000000000000000000"

# 数据库配置（可选，用于查询验证）
# 参考 application-test.properties
TEST_DB_URL="jdbc:mysql://pc-wz905be2f3hug6uj2.mysql.polardb.rds.aliyuncs.com:3306/pokermind_test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai"
TEST_DB_USER="pokermind"
TEST_DB_PASSWORD="Oa123456"
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

cd "$(dirname "$0")/.."

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
MAGENTA='\033[0;35m'
NC='\033[0m' # No Color

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "  ${MAGENTA}预设场景测试客户端 V4.2 - 测试环境${NC}"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

# 场景选择
SCENARIO=${1:-"basic"}

# 如果是 list 命令，列出所有场景
if [ "$SCENARIO" = "list" ]; then
    echo "${YELLOW}正在列出所有可用场景...${NC}"
    echo ""
    mvn -q exec:java \
        -pl pokermind-serv-dse-tcp \
        -Dexec.mainClass="com.pokermind.dse.tcp.client.preset.PresetScenarioClient" \
        -Dexec.args="list"
    exit 0
fi

# 场景描述映射
case "$SCENARIO" in
    # 基础场景
    "basic")
        DESC="基础对决场景（快速测试）"
        ;;
    "classic")
        DESC="经典 BTN vs BB"
        ;;
    
    # 翻前场景
    "3bet")
        DESC="翻前 3-bet"
        ;;
    "4bet")
        DESC="翻前 4-bet"
        ;;
    "allin")
        DESC="翻前全下"
        ;;
    
    # ★ V4.2: Straddle 场景
    "straddle_basic")
        DESC="${GREEN}★ Straddle 基础场景${NC}"
        ;;
    "straddle_3bet")
        DESC="${GREEN}★ Straddle + 3-bet 场景${NC}"
        ;;
    "straddle_multi")
        DESC="${GREEN}★ Straddle 多人底池场景${NC}"
        ;;
    
    # 多人底池
    "multiway")
        DESC="多人底池基础场景"
        ;;
    "multiway_complex")
        DESC="多人底池复杂场景"
        ;;
    
    # ★ V4.2: 满桌场景
    "fullring_9")
        DESC="${GREEN}★ 9人满桌场景（Full Ring）${NC}"
        ;;
    
    # 特殊场景
    "fold_to_3bet")
        DESC="Fold to 3-bet 场景"
        ;;
    "continuation_bet")
        DESC="持续下注场景"
        ;;
    "check_raise")
        DESC="过牌加注场景"
        ;;
    
    # 完整手牌
    "full_hand")
        DESC="完整手牌到河牌"
        ;;
    "complex")
        DESC="复杂场景（综合测试）"
        ;;
    
    *)
        echo "${RED}❌ 未知场景: $SCENARIO${NC}"
        echo ""
        echo "${YELLOW}提示：使用 './startPresetClientTest.sh list' 查看所有可用场景${NC}"
        exit 1
        ;;
esac


echo "${CYAN}运行环境:${NC} ${MAGENTA}测试环境${NC}"
echo "${CYAN}运行场景:${NC} $DESC"
echo "${CYAN}场景ID:${NC} $SCENARIO"
echo "${CYAN}服务器:${NC} ${TEST_SERVER_HOST}:${TEST_SERVER_PORT}"
echo "${CYAN}API Key:${NC} ${TEST_API_KEY:0:8}***${TEST_API_KEY: -4}"
echo ""

# 检查服务是否运行
echo "${YELLOW}正在检查测试服务状态...${NC}"
if ! nc -z -w5 "$TEST_SERVER_HOST" "$TEST_SERVER_PORT" 2>/dev/null; then
    echo "${RED}❌ 无法连接到测试服务器！${NC}"
    echo ""
    echo "${YELLOW}可能原因:${NC}"
    echo "  1. 测试服务未启动"
    echo "  2. 网络连接问题"
    echo "  3. 服务器地址: ${TEST_SERVER_HOST}:${TEST_SERVER_PORT}"
    echo "  4. 防火墙阻止"
    echo ""
    exit 1
fi
echo "${GREEN}✓ 测试服务运行中${NC}"
echo ""

# 执行测试
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "  ${CYAN}开始执行测试${NC}"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

# 设置测试环境的环境变量
export SERVER_HOST="$TEST_SERVER_HOST"
export SERVER_PORT="$TEST_SERVER_PORT"
export API_KEY="$TEST_API_KEY"

# 测试环境数据库配置（如果需要验证）
if [ -n "$TEST_DB_PASSWORD" ]; then
    export DB_URL="$TEST_DB_URL"
    export DB_USER="$TEST_DB_USER"
    export DB_PASSWORD="$TEST_DB_PASSWORD"
fi

mvn -q exec:java \
    -pl pokermind-serv-dse-tcp \
    -Dexec.mainClass="com.pokermind.dse.tcp.client.preset.PresetScenarioClient" \
    -Dexec.args="$SCENARIO"

EXIT_CODE=$?

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

if [ $EXIT_CODE -eq 0 ]; then
    echo "  ${GREEN}✅ 测试执行成功${NC}"
else
    echo "  ${RED}❌ 测试执行失败 (退出码: $EXIT_CODE)${NC}"
fi

echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

exit $EXIT_CODE

